Tasten & Command Beschreibung
=============================


Command-Gruppe "DB": Datenbank
==============================

Beispiele fr den Umgang dieser Command-Gruppe finden sich in einem eigenen Profil
mit dem Namen "Database Example". Dieses befindet sich im 2. Profil-Set, also
zuvor durch Anwahl des obersten Men-Punktes im Systray-Popmenu das Profil-Set
umschalten.

--> Achtung !
Der Datenbankzugriff von RK basiert auf der MS-Jet-Engine 3.5 (DAO 3.5).
Leider wird DAO 3.6 und grer nicht untersttzt!
DAO 3.6 ist in ME, 2000, XP etc. enthalten.
Dies ist aber kein Grund dafr die Datenbank-Funktionalitt von RK nicht nutzen
zu knnen. In einigen (oder vielen) Fllen ist es erforderlich, das System
fr DAO 3.5 herzurichten.
Eventuell sind DAO 3.5 und DAO 3.6 dann parallel installiert, aber das scheint
nach bisherigen Erkenntnissen keine Probleme zu bereiten.

Als erstes sollte man ausprobieren, ob sich eine Datenbank mittels RK ffnen lt
(siehe Beispiel-Profil). Tritt eine Fehlermeldung auf die da lautet
"Klasse nicht registriert, siehe nach Objekt mit CLSID ... lange Nummer ...",
dann scheint DAO 3.5 nicht auf dem System verfgbar zu sein.
Dann sollte man noch einen 2ten Test unternehmen.
Im Verzeichnis "\Programme\Gemeinsame Dateien\Microsoft Shared\DAO" wird sich
vermutlich nur die Datei dao360.dll befinden. Dies besagt, da DAO 3.6 installiert
ist. Die komplimentre Datei fr DAO 3.5 heit dao350.dll (oder der DAO-Ordner ist
erst gar nicht existent).
Nun wre es aber zu einfach, sich diese Datei zu besorgen, dort hinein zu kopieren
und alles ist gut, denn DAO 3.5 erfordert noch weitere Dateien, die zudem korrekt
registriert sein mssen.

Daher ist der einfachste Weg das System auf DAO 3.5 herzurichten, wenn DAO 3.5 von
freewarehits.de downgeloaded wird und die exe auf dem System gestartet wird.
Das Archiv enthlt noch die Datei vb5db.dll, die ggf. noch ins Windows\System-
Verzeichnis kopiert werden mu.

Dieses Verfahren wurde auf einer sauberen ME-Installation, sowie einer stark benutzen
NT-Installation durchgefhrt und es funktionierte alles einwandfrei.
Aber der vollstndigkeitshalber mu natrlich gesagt werden, da keine Garantien gegeben
werden knnen und die Installation auf eigenes Risiko geschieht!

Die direkte Download-Adresse lautet:
http://www.freewarehits.de/AddFiles/dao35.zip (3.2 mb)

Die auf der Microsoft Jet-Engine aufsetzenden Datenbank-Anbindung erfordert - je nach
gewnschtem Datenbank-Zugriff - sogenannte ISAM-Treiber. Das ODBC-Verfahren liee
sich auch einstellen (s.u.), wurde aber nicht getestet.
Folgende Datenbanken - die Installation der erforderlichen Treiber vorrausgesetzt -
werden durch RK (mindestens) untersttzt:

- Access
- DBase 3/4/5
- Excel 3/4/5/8
- FoxPro 2/2.5/2.6/3
- Lotus WK 1/3/4
- Paradox 3/4/5
- Text

Erfolgreich getestet wurden Access (.mdb), Excel (.xls) und Text (.txt).
Die Treiber sollten - zumindest bei den Office-Anwendungen - bei der Installation der
jeweiligen Programme mit-installiert worden sein.

Allerdings... auf dem RK-Entwicklungs-Rechner lief - obwohl DAO 3.5 vorhanden - zunchst
nicht viel. Der Grund war, da die Treiber (35er) zwar vorhanden waren, allerdings nicht
ordnungsgem in der Registry eingetragen. Sofern sich diese im Windows-System-Verzeichnis
befinden, kann dies folgendermaen nachgeholt werden:

Z.B. das Ausfhren-Fenster ffnen und folgende Zeilen eingeben.

Regsvr32.exe C:\Windows\System\Msexcl35.dll
Regsvr32.exe C:\Windows\System\Mstext35.dll

Danach erfolgt (hoffentlich) die Meldung, da die Treiber erfolgreich installiert sind.

Die Treiber Msexcl40.dll/Mstext40.dll sind fr DAO ab 3.6 vorgesehen und fr DAO 3.5 nicht
geeignet!

Als nchstes bestand das Problem, da die ASCII-Zeichen (Umlaute etc.) nicht ordnungsgem
konvertiert wurden. Um dies zu beheben, mute manuell in die Registry eingegriffen werden:
Der entsprechde Pfad lautet (bitte suchen lassen):

Jet\3.5\Engines\Text

Folgender Schlssel mu ggf. gendert werden:
CharacterSet von "OEM" auf "ANSI" setzen.

Ggf. bei Excel, Access etc. kontrollieren.

Diese geschilderten Probleme traten nur bei der bereits vorhandenen DAO 3.5 auf.
Bei der oben beschriebenen DAO 3.5 Installation funktionierte alles auf Anhieb.

--> Einschrnkung
Beim Auslesen von Werte enthaltenen Zellen kommt es gelegentlich zu berlauffehlern. RK fngt
diese Fehler zwar ab, kann dann aber fr das betroffene Feld nur noch einen Leer-String senden.
Ferner wird auch nur das Auslesen untersttzt, beschreiben kann RK eine Datenbank durch
Direktzugriff (noch) nicht.

Vorgehensweise
--------------
Als erstes mu stets eine Datenbank geffnet werden.
RK arbeitet intern mit 2 Zeigern. Der erste positioniert einen Datensatz, der zweite ein
Datenfeld. Welches Datenfeld beim Sende-Befehl (DB.FIELD.SEND) letztendlich an die
Anwendung gesendet wird, ist von diesen 2 Zeigern abhngig.
Nun gibt RK dem Anwender diverse Commands in die Hand, um diese Zeiger zu positionieren.
Der Select-Command eignet sich z.B. fr eine einmalige Sendung eines Datenfeldes, indem der
Anwender dieses gezielt aus einer Liste heraussucht und anschlieend sendet.
Andere Commands wie SET und INC sind eher fr Serien-Sendungen gedacht, die z.B. in einer
Schleife untergebracht werden.

Faustregel:

1. Datenbank ffnen
2. Datensatz-Zeiger positionieren
3. Datenfeld-Zeiger positionieren
4. Senden


/DB.OPEN f[,t,p3,p4,p5]: ffnet die Datenbank Name <f> (file), Tabelle <t>, p3/4/5 = optionale Parameter
------------------------
Beim Zugriff auf eine Access-Datenbank (.mdb) oder Excel-Mappe (.xls) mssen die Parameter
<f> & <t> definiert sein. Wird der Parameter <t> nicht angegeben, so wird autom. eine Liste
angezeigt, aus der eine Tabelle ausgewhlt werden mu (entspr. DB.TABLE.SELECT).
Beim Zugriff auf eine TAB-separierte Text-Datei (.txt) wird nur der Parameter <f> angegeben.
In diesen 3 Fllen erkennt RK selbststndig das Format und stellt die verbleibenden
Parameter automatisch ein.
Allerdings werden Parameter-Setzungen mit Prioritt behandelt. D.h. sofern sie angegeben werden,
wird die automatische Einstellung von RK auer Kraft gesetzt.
In anderen (ungetesteten) Fllen mssen zustzliche Angaben gemacht werden, wenigstens den p3-
Parameter betreffend.

Die Parameter im Einzelnen:

f : File:    Dateiname = Pfad zur Datei

t : Table:   Die Excel-Mappe besteht bekanntlich aus einzelnen Tabellen.
             Es kann nur auf eine zur Zeit zugegriffen werden, die hier anzugeben ist.
             Bei Access handelt es sich um die Einzel-Datei der Datenbank.
             Texte sind sozusagen ein-dimensional, so da der Parameter hier entfllt.

             Dem Tabellen-Name in Excel mu ein $ hinzugefgt werden (warum auch immer).
             Bei Text wird automatisch ein #txt generiert.
             Bei Access ist der Tabellen-Name unverndert anzugeben.
             Andere Formate wurden nicht geprft.

             Im Zweifelsfalle den Parameter erstmal weglassen und die Tabelle aus der stattdessen
             erscheinenden Auswahlbox auswhlen. In dieser kann man die genauen Tabellen-Bezeich-
             nungen erkennen, um die gewnschte spter in den t-Parameter zu bertragen.

p3: Connect: Angabe des Datenbank-Typs. Die genauen Beschreibungen lauten (Access ohne Semikolon): 

             Access
             dBASE III;
             dBASE IV;
             dBASE 5.0;
             Excel 3.0;
             Excel 4.0;
             Excel 5.0;
             Excel 8.0;
             FoxPro 2.0;
             FoxPro 2.5;
             FoxPro 2.6;
             FoxPro 3.0;
             Lotus WK1;
             Lotus WK3;
             Lotus WK4;
             Paradox 3.x;
             Paradox 4.x;
             Paradox 5.x;
             Text;

             RK benutzt standardmig Excel 3.0. Damit kann problemlos auch auf 8.0-Dateien
             zugegriffen werden, ist aber eben auch fr ltere Versionen geeignet.

p4: Rec-Set-Type: p4 = 0 - 2. Es knnen folgende Typen eingestellt werden:

             0 : Table
             1 : Dynaset  (Standard-Einstellung)
             2 : Snapshot

             Im Test (mdb/xls/txt) lief alles unter Dynaset, Table funktionierte auch.
 
p5: Engine: p5 = 0 - 1. Hier kann zwischen folgenden "Treiber-Maschinen" gewhlt werden:

             0 : Jet  (MS, Standard-Einstellung)
             1 : ODBC

Beispiel: {/DB.OPEN c:\data\db.xls}
Beispiel: {/DB.OPEN c:\data\db.mdb,sheet1}
Beispiel: {/DB.OPEN c:\data\db.xls,sheet1$}
Beispiel: {/DB.OPEN c:\data\db.txt}
Beispiel: {/DB.OPEN c:\data\db.xyz,sheet1,dBASE III;}     (Parameter fr dbase unbekannt!)
Beispiel: {/DB.OPEN c:\data\db.xyz,sheet1,dBASE III;,0}
Beispiel: {/DB.OPEN c:\data\db.xyz,sheet1,dBASE III;,2,1}


/DB.CLOSE .............: Schliet die aktuelle Datenbank
------------------------
Das Schlieen einer Datenbank ermglicht es, wieder von anderen Anwendungen auf
die Bank zuzugreifen und gibt darber hinaus reservierten Speicher wieder frei.

Beispiel: {/DB.CLOSE}


/DB.FIELD.ASK .........: Legt die Feld-Nummer whrend der Skript-Abarbeitung fest
------------------------

Beispiel: {/DB.FIELD.ASK}


/DB.FIELD.CLIP [len] ..: Kopiert den aktuellen Feld-Inhalt in die Zwablage, optional max. Lnge [len]
------------------------

Beispiel: {/DB.FIELD.CLIP}
Beispiel: {/DB.FIELD.CLIP 25}

Im letzten Beispiel werden die ersten 25 Zeichen des aktuellen Datenfeldes in die
Zwablage kopiert.


/DB.FIELD.INC .........: Setzt die Feld-Nummer um 1 nach oben
/DB.FIELD.DEC .........: Setzt die Feld-Nummer um 1 nach unten
------------------------

Beispiel: {/DB.FIELD.INC}


/DB.FIELD.NMB>VAR .....: Kopiert die Feld-Nummer in die aktuelle VAR
/DB.FIELD.NMB<VAR .....: Setzt die Feld-Nummer auf den Wert der aktuellen VAR
------------------------
Ermglicht den Austausch der Feld-Nummer mit der Variablen VAR, soda Berechnungen
mglich sind.
(siehe Command-Gruppe VAR-Commands, Rechnen)

Beispiel: 

{/BTCH.EXPLICIT}
{/DB.FIELD.NMB>VAR}
{/VAR.ADD 3}
{/DB.FIELD.NMB<VAR}


/DB.FIELD.SEND [len] ..: Sendet den aktuellen Feld-Inhalt, optional max. Lnge [len]
------------------------
Das Datenfeld ist das kleinste Element der Datenbank:
Datenbank -> Tabelle -> Datensatz -> Datenfeld
Nur dieses kann durch RK gesendet werden.
Ganze Datenstze sendet man daher durch eine Verkettung von DB.FIELD.SEND-Commands
im Skript. Vor dem Senden mu der Datensatz-Zeiger entsprechend positioniert werden.

Beispiel:

{/BTCH.EXPLICIT}
{/DB.REC.SELECT}
{/BTCH.EXITIF.CANCEL}
{/DB.FIELD.SET 4}
{/DB.FIELD.SEND}{KEY.TAB}
{/DB.FIELD.SET 5}
{/DB.FIELD.SEND}{KEY.TAB}
{/DB.FIELD.SET 6}
{/DB.FIELD.SEND}{KEY.TAB}

Beispiel: {/DB.FIELD.SEND 15}

In diesem Beispiel wird die Ausgabe auf 15 Zeichen begrenzt.


/DB.FIELD.SEND.FRMT str: Sendet den aktuellen Feld-Inhalt formatiert (str=###0.00 um 1,30 zu senden)
------------------------
Gestattet die formatierte Ausgabe fr Zahlen- und Datums-Feldern.

Beispiel: {/DB.FIELD.SEND.FRMT ##0.00}
Beispiel: {/DB.FIELD.SEND.FRMT long date}

-> Beachte!
Fr Datums-Felder trifft die Beschreibung in den DAT-Commands zu (DAT.FORMAT str),
mit Ausnahme der "Alleinstehenden Parametern" (Stand Alone).


/DB.Field.SET nmb .....: Legt die Feld-Nummer auf <nmb> fest
------------------------

Beispiel: {/DB.Field.SET 5}


/DB.Field.VIEW ........: Zeigt das aktuelle Feld im internen Textbetrachter an
------------------------

Beispiel: {/DB.Field.VIEW}


/DB.PROP.VIEW .........: Zeigt die Einstellungen der aktuellen Datenbank im internen Textbetrachter an
------------------------

Beispiel: {/DB.PROP.VIEW}


/DB.REC.ASK ...........: Legt die Datensatz-Nummer whrend der Skript-Abarbeitung fest
------------------------

Beispiel: {/DB.REC.ASK}


/DB.REC.INC ...........: Setzt die Datensatz-Nummer um 1 nach oben
/DB.REC.DEC ...........: Setzt die Datensatz-Nummer um 1 nach unten
------------------------

Beispiel: {/DB.REC.INC}


/DB.REC.NMB>VAR .......: Kopiert die Datensatz-Nummer in die aktuelle VAR
/DB.REC.NMB<VAR .......: Setzt die Datensatz-Nummer auf den Wert der aktuellen VAR
------------------------
Ermglicht den Austausch der Datensatz-Nummer mit der Variablen VAR, soda Berechnungen
mglich sind.
(siehe Command-Gruppe VAR-Commands, Rechnen)

Beispiel: 

{/BTCH.EXPLICIT}
{/DB.REC.NMB>VAR}
{/VAR.ADD 3}
{/DB.REC.NMB<VAR}


/DB.REC.SELECT ........: Legt die Datensatz- und Datenfeld-Nummer durch Auswahl aus 2 Listen fest
------------------------
Dieses Fenster gestattet es, ein beliebiges Datenfeld eines beliebigen Datensatzes
auszuwhlen. Den Datensatz selektiert man in der linken, das Datenfeld in der rechten
Liste. Die Bestimmung von Datensatz- und Datenfeld-Nummer bleibt nach dem Schlieen des
Fensters erhalten, um mit ihnen ggf. weiterzuarbeiten, indem man z.B. das selektierte
Datenfeld mittels {/DB.FIELD.SEND} an eine Anwendung sendet.

Die mglichen Fenster-Einstellungen findet der Anwender durch Probieren sicher
schnell heraus.
Ein Wort zu "Auto": Diese Einstellung ermittelt, hnlich wie in Excel, durch Prfen
smtlicher Datenfelder die maximal erforderliche Spaltenbreite.
Einstellungsnderungen werden - auch beim Klick auf Cancel - im Verlauf der Session
weiter benutzt. Gespeichert hingegen werden sie nur durch Klick auf OK und stehen
sodann automatisch in der kommenden Session zur Verfgung.
Text-Files besitzen nur ein Datenfeld (0), weswegen die meisten Funktionen hier deaktiviert
sind.

Beispiel: {/DB.REC.SELECT}

--> Tip
Wird der Dialog durch "Abbrechen" geschlossen, so kann die Skript-Abarbeitung
an dieser Stelle durch den Command "BTCH.EXIT-ON-CANCEL" (siehe dort) beendet
werden.

--> Tip
Die Listenbreiten lassen sich durch drag & drop verndern, indem man den Balken zwischen
den Listen greift und verschiebt.

--> Tip
Neben den windows-seitigen Steuerungsmglichkeiten in den Listen (CRSR-DOWN/UP) sind
zustzlich verfgbar:

[CRSR-RIGHT] : aktiviert die rechte Liste (zwecks CRSR-DOWN/UP)
[CRSR-LEFT]  : aktiviert die linke  Liste
[Enter] .....: entspricht Klick auf OK-Knopf
[Space] .....: entspricht Klick auf OK-Knopf


/DB.REC.SET nmb .......: Setzt die Datensatz-Nummer auf <nmb> fest
------------------------
Der Datensatz besteht aus einer Gruppe zusammengehrender Datenfelder, z.B.
Anrede, Nachname, Vorname, Ort etc. Im Falle von Excel ist der Datensatz eine
Zellen-Zeile und das Datenfeld die einzelne Zelle.

Beispiel: {/DB.REC.SET 155}


/DB.REC.VIEW [len] ....: Zeigt alle Felder im int. Textbetrachter an, optional max. Lnge [len]
------------------------

Beispiel: {/DB.REC.VIEW}
Beispiel: {/DB.REC.VIEW 75}

Im letzten Beispiel werden 75 Zeichen (von links) smtlicher Datenfelder (Kette) des aktuellen
Datensatzes angezeigt.

-> Beachte!
Funktionsnderung des Parameters zu RK v7.0. Ggf. Parameter anpassen.


/DB.TABLE.ASK-N .......: Legt die Tabellen-Nr. whrend der Skript-Abarbeitung fest
/DB.TABLE.ASK-S .......: Legt den Tabellen-Namen whrend der Skript-Abarbeitung fest
------------------------

Beispiel: {/DB.TABLE.ASK-N}
Beispiel: {/DB.TABLE.ASK-S}


/DB.TABLE.SELECT ......: Legt die Tabelle durch Auswahl aus einer Liste fest
------------------------
Bei geffneter Datenbank kann so zwischen verschiedenen Tabellen hin- und hergeschaltet werden.

Beispiel: {/DB.TABLE.SELECT}


/DB.TABLE.SET-N nmb ...: Legt die Tabellen-Nr. <nmb> fest
/DB.TABLE.SET-S str ...: Legt den Tabellen-Namen <str> fest
------------------------

Beispiel: {/DB.TABLE.SET-N 4}
Beispiel: {/DB.TABLE.SET-S profit$}